package rbac.dao;

import java.util.List;

import rbac.entity.RbacUserGroup;


/**
 * RBAC DAO 接口, 负责提供<strong>用户组</strong>实体与数据库交互的方法.
 * 
 * @author Huadi
 * @author Zoufengyang
 */
public interface UserGroupDao {

	/**
	 * 通过用户组名称获取 <code>RbacUserGroup</code> 实体.
	 * 
	 * @param id
	 *            用户组 ID.
	 * @return <code>RbacUserGroup</code> 实体. 如果不存在, 返回 <code>null</code>.
	 */
	RbacUserGroup getUserGroup(Integer id);
	
	/**
	 * 获得所有 <code>RbacUserGroup</code> 实体.
	 * 
	 * @return 所有 <code>RbacUserGroup</code> 实体列表.
	 */
	List<RbacUserGroup> getAllUserGroups();

	/**
	 * 持久化一个 <code>RbacUserGroup</code> 实体.
	 * 
	 * @param userGroup
	 *            要持久化的实体.
	 */
	void save(RbacUserGroup userGroup);

	/**
	 * 修改一个 <code>RbacUserGroup</code> 实体.
	 * 
	 * @param userGroup
	 *            要修改的实体.
	 */
	void update(RbacUserGroup userGroup);

	/**
	 * 删除一个用户组.
	 * 
	 * @param id
	 *            用户组 ID.
	 */
	void delete(Integer id);

	/**
	 * 删除一个用户组.
	 * 
	 * @param userGroup
	 *            用户组实体.
	 */
	void delete(RbacUserGroup userGroup);

}
